﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using PreCommitHook.Logica.FabricaLogica;
using PreCommitHook.Entidades;
using PreCommitHook.Logica.Comandos;
using PreCommitHook.Logica.Interfaces;
using PreCommitHook.Logica.FabricaLogica;

namespace PreCommitHook.Logica.Comandos.ComandoMotorRegla
{
    public class ComandoValidarArchivo : CrearRegla, IComandoValidarArchivo
    {
        // ruta, int idproyecto, int lider
        public  void Ejecutar()
        {
            //Comando archivo = ;
            FabricaComandoRegla fr = FabricaComandoRegla.ObtenerFabricaComandoParsear();
            IComandoParsear parsear= fr.ObtenerComandoParsear();
            string ruta=parsear.ToString() ;
            parsear.Ejecutar();
            //archivo.Cadena = "ruta";//aqui se pasa la ruta
            //archivo.Ejecutar();//crea perfil y se llena con lo que este en la base de datos
            
            PerfilRegla perfil = new PerfilRegla();
           // perfil = PerfilReglasProyecto.buscarReglas(Id);
            EntidadRegla regla = new EntidadRegla();
            PreCommitHook.Entidades.Resultado Result = new PreCommitHook.Entidades.Resultado();
            for (int i = 0; i == perfil.nombreRegla.Count; i++)
            {
                if (perfil.nombreRegla[i].Equals("ParentesisCEF"))
                {
                    //regla = new LogicaReglaParentesis(1);
                    FabricaComandoRegla fre = FabricaComandoRegla.ObtenerFabricaConsultarEspacioParentesis();
                    IConsultarEspacioParentesis com= fre.ObtenerConsultarEspacioParentesisCEF();
                    //Comando com = FabricaComandoRegla.ObtenerFabricaConsultarEspacioParentesis().ObtenerConsultarEspacioParentesisCEF();
                    //com.Id = 1;
                    
                    com.Ejecutar();
                    ListaEntidad.Add(Entidad);
                    perfil.listaRegla.Add(Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("ParentesisSE"))
                {
                    //Comando com = FabricaComandoRegla.ObtenerFabricaConsultarEspacioParentesis().ObtenerConsultarEspacioParentesisSE();
                    //com.Id = 2;
                    FabricaComandoRegla frcp= FabricaComandoRegla.ObtenerFabricaConsultarEspacioParentesis();
                    IConsultarEspacioParentesis com1 = frcp.ObtenerConsultarEspacioParentesisSE();
                    com1.Ejecutar();
                    ListaEntidad.Add(Entidad);
                    perfil.listaRegla.Add(Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("ParentesisEX"))
                {
                    //Comando com = FabricaComandoRegla.ObtenerFabricaConsultarEspacioParentesis().ObtenerConsultarEspacioParentesisEX();
                    //com.Id = 3;
                    FabricaComandoRegla frr = FabricaComandoRegla.ObtenerFabricaConsultarEspacioParentesis();
                    IConsultarEspacioParentesis com2= frr.ObtenerConsultarEspacioParentesisEX();
                    com2.Ejecutar();
                    ListaEntidad.Add(Entidad);
                    perfil.listaRegla.Add(Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("ParentesisIN"))
                {
                    //Comando com = FabricaComandoRegla.ObtenerFabricaConsultarEspacioParentesis().ObtenerConsultarEspacioParentesisIN();
                    //com.Id = 4;

                    FabricaComandoRegla fcr = FabricaComandoRegla.ObtenerFabricaConsultarEspacioParentesis();
                    IConsultarEspacioParentesis com3= fcr.ObtenerConsultarEspacioParentesisIN();
                    com3.Ejecutar();
                    ListaEntidad.Add(Entidad);
                    perfil.listaRegla.Add(Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("ConEspacio"))
                {
                    //regla = new LogicaReglaOperadores(1);
                    //Comando com = FabricaComandoRegla.ObtenerFabricaConsultarEspacioOperadores().ObtenerFabricaConsultarEspacioOperadoresConEspacio();
                    //com.Id = 1;

                    FabricaComandoRegla frcc = FabricaComandoRegla.ObtenerFabricaConsultarEspacioOperadores();
                    IConsultarEspacioOperadores  com4 = frcc.ObtenerFabricaConsultarEspacioOperadoresConEspacio();
                    com4.Ejecutar();
                    ListaEntidad.Add(Entidad);
                    perfil.listaRegla.Add(Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("SinEspacio"))
                {
                    //Comando com = FabricaComandoRegla.ObtenerFabricaConsultarEspacioOperadores().ObtenerFabricaConsultarEspacioOperadoresSinEspacio();
                    //com.Id = 2;
                    FabricaComandoRegla fcr1= FabricaComandoRegla.ObtenerFabricaConsultarEspacioOperadores();
                    IConsultarEspacioOperadores  com5 = fcr1.ObtenerFabricaConsultarEspacioOperadoresSinEspacio();
                    com5.Ejecutar();
                    ListaEntidad.Add(Entidad);
                    perfil.listaRegla.Add(Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("Mayuscula_NoUnderscore"))
                {
                    //regla = new LogicaReglaNombrarClases(1);
                    //Comando com = FabricaComandoRegla.ObtenerFabricaConsultarNombreClase().ObtenerConsultarNombreClaseMayusNoUnder();
                    //com.Id = 1;
                    //FabricaComandoRegla frc2 = FabricaComandoRegla.ObtenerFabricaConsultarNombreClase();
                    //IConsultarNombreClase com6= frc2.ObtenerConsultarNombreClaseMayusNoUnder();
                    //com6.Ejecutar();
                    ListaEntidad.Add(Entidad);
                    perfil.listaRegla.Add(Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("Mayuscula_SiUnderscore"))
                {
                    //Comando com = FabricaComandoRegla.ObtenerFabricaConsultarNombreClase().ObtenerConsultarNombreClaseMayusSiUnder();
                    //com.Id = 2;
                    FabricaComandoRegla frc3 = FabricaComandoRegla.ObtenerFabricaConsultarNombreClase();
                    IConsultarNombreClase com7= frc3.ObtenerConsultarNombreClaseMayusSiUnder();
                    com7.Ejecutar();
                    ListaEntidad.Add(Entidad);
                    perfil.listaRegla.Add(Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("Minuscula_NoUnderscore"))
                {
                    //Comando com = FabricaComandoRegla.ObtenerFabricaConsultarNombreClase().ObtenerConsultarNombreClaseMinusNoUnder();
                    //com.Id = 3;
                    FabricaComandoRegla frc4 = FabricaComandoRegla.ObtenerFabricaConsultarNombreClase();
                    IConsultarNombreClase com8 = frc4.ObtenerConsultarNombreClaseMinusNoUnder();
                    com8.Ejecutar();
                    ListaEntidad.Add(Entidad);
                    perfil.listaRegla.Add(Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("Minuscula_SiUnderscore"))
                {
                    //Comando com = FabricaComandoRegla.ObtenerFabricaConsultarNombreClase().ObtenerConsultarNombreClaseMinusSiUnder();
                    //com.Id = 4;
                    FabricaComandoRegla frc5 = FabricaComandoRegla.ObtenerFabricaConsultarNombreClase();
                    IConsultarNombreClase com9 = frc5.ObtenerConsultarNombreClaseMinusSiUnder();
                    com9.Ejecutar();
                    ListaEntidad.Add(Entidad);
                    perfil.listaRegla.Add(Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("regla_LlavesSolas"))
                {
                    //Comando com = FabricaComandoRegla.ObtenerFabricaConsultarLlaves().ObtenerConsultarLlavesSolas();
                    //com.Id = 1;
                    FabricaComandoRegla frc6 = FabricaComandoRegla.ObtenerFabricaConsultarLlaves();
                    IConsultarLlaves com10= frc6.ObtenerConsultarLlavesSolas();
                    com10.Ejecutar();
                    ListaEntidad.Add(Entidad);
                    perfil.listaRegla.Add(Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("regla_LlavesJuntas"))
                {
                    //Comando com = FabricaComandoRegla.ObtenerFabricaConsultarLlaves().ObtenerConsultarLlavesJuntas();
                    //com.Id = 2;
                    FabricaComandoRegla frc7 = FabricaComandoRegla.ObtenerFabricaConsultarLlaves();
                    IConsultarLlaves com11 = frc7.ObtenerConsultarLlavesJuntas();
                    com11.Ejecutar();
                    ListaEntidad.Add(Entidad);
                    perfil.listaRegla.Add(Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("regla_LlavesCompJS"))
                {
                    //Comando com = FabricaComandoRegla.ObtenerFabricaConsultarLlaves().ObtenerConsultarLlavesCompJS();
                    //com.Id = 3;
                    FabricaComandoRegla frc8 = FabricaComandoRegla.ObtenerFabricaConsultarLlaves();
                    IConsultarLlaves com12 = frc8.ObtenerConsultarLlavesCompJS();
                    com12.Ejecutar();
                    ListaEntidad.Add(Entidad);
                    perfil.listaRegla.Add(Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("regla_LlavesCompSJ"))
                {
                    //Comando com = FabricaComandoRegla.ObtenerFabricaConsultarLlaves().ObtenerConsultarLlavesCompSJ();
                    //com.Id = 4;
                    FabricaComandoRegla frc9 = FabricaComandoRegla.ObtenerFabricaConsultarLlaves();
                    IConsultarLlaves com13 = frc9.ObtenerConsultarLlavesCompSJ();
                    com13.Ejecutar();
                    ListaEntidad.Add(Entidad);
                    perfil.listaRegla.Add(Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("ComentarClase"))
                {
                    //Comando com = FabricaComandoRegla.ObtenerFabricaConsultarDocumentClase().ObtenerFabricaConsultarDocumentClaseDobleSlash();
                    //com.Id = 1;
                    FabricaComandoRegla frc10 = FabricaComandoRegla.ObtenerFabricaConsultarDocumentClase();
                    //IConsultarDocumentClase  com14 = frc10.ObtenerFabricaConsultarDocumentClaseDobleSlash();
                    //com14.Ejecutar();
                    ListaEntidad.Add(Entidad);
                    perfil.listaRegla.Add(Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("ComentarEstructura"))
                {
                    //Comando com = FabricaComandoRegla.ObtenerFabricaConsultarDocumentEstructura().ObtenerFabricaConsultarDocumentClaseDobleSlash();
                    //com.Id = 1;
                    //FabricaComandoRegla frc11 = FabricaComandoRegla.ObtenerFabricaConsultarDocumentEstructura();
                    //IConsultarDocumentEstructura  com15 = frc11.ObtenerConsultarDocumentEstructuraDobleSlash();
                    //com15.Ejecutar();
                    ListaEntidad.Add(Entidad);
                    perfil.listaRegla.Add(Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("ComentarBoilerPlate"))
                {
                     //////FALTA REVISARRR//////////
                    ////Comando com = FabricaComandoRegla.ObtenerFabricaConsultarComentarioBoilerplate();
                    ////com.Id = 1;
                    //FabricaComandoRegla frc12 = FabricaComandoRegla.ObtenerFabricaConsultarComentarioBoilerplate();
                   
                    //com16.Ejecutar();///
                    //ListaEntidad.Add(Entidad);
                    //perfil.listaRegla.Add(Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla[i].Equals("ComentarMetodo"))
                {
                    //Comando com = FabricaComandoRegla.ObtenerFabricaConsultarDocumentMetodo().ObtenerConsultarDocumentMetodoDobleSlash();
                    //com.Id = 1;
                    //FabricaComandoRegla frc13 = FabricaComandoRegla.ObtenerFabricaConsultarDocumentMetodo();
                    //IConsultarDocumentMetodo com17 = frc13.ObtenerConsultarDocumentMetodoDobleSlash();
                    //com17.Ejecutar();
                    ListaEntidad.Add(Entidad);
                    perfil.listaRegla.Add(Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla.Equals("AtributoMayuscula"))
                {
                    //Comando com = FabricaComandoRegla.ObtenerFabricaConsultarNombreAtributo().ObtenerConsultarNombreAtributoMayuscula();
                    //com.Id = 1;
                    //FabricaComandoRegla frc14= FabricaComandoRegla.ObtenerFabricaConsultarNombreAtributo();
                    //IConsultarNombreAtributo com18= frc14.ObtenerConsultarNombreAtributoMayuscula();
                    //com18.Ejecutar();
                    ListaEntidad.Add(Entidad);
                    perfil.listaRegla.Add(Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla.Equals("AtributoMinuscula"))
                {
                    //Comando com = FabricaComandoRegla.ObtenerFabricaConsultarNombreAtributo().ObtenerConsultarNombreAtributoMinuscula();
                    //com.Id = 2;
                    //FabricaComandoRegla frc15 = FabricaComandoRegla.ObtenerFabricaConsultarNombreAtributo();
                    //IConsultarNombreAtributo com19= frc15.ObtenerConsultarNombreAtributoMinuscula();
                    //com19.Ejecutar();
                    ListaEntidad.Add(Entidad);
                    perfil.listaRegla.Add(Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla.Equals("MetodoM"))
                {
                    //Comando com = FabricaComandoRegla.ObtenerFabricaConsultarNombreMetodo().ObtenerConsultarNombreMetodoNombre();
                    //com.Id = 1;
                    //FabricaComandoRegla frc16 = FabricaComandoRegla.ObtenerFabricaConsultarNombreMetodo();
                    //IConsultarNombreMetodo com20= frc16.ObtenerConsultarNombreMetodoNombre();
                    //com20.Ejecutar();
                    ListaEntidad.Add(Entidad);
                    perfil.listaRegla.Add(Entidad as EntidadRegla);
                }
                else if (perfil.nombreRegla.Equals("MetodoN"))
                {
                    //Comando com = FabricaComandoRegla.ObtenerFabricaConsultarNombreMetodo().ObtenerConsultarNombreMetodoNombreMetodo();
                    //com.Id = 2;
                    //FabricaComandoRegla frc16 = FabricaComandoRegla.ObtenerFabricaConsultarNombreMetodo();
                    //IConsultarNombreMetodo com21= frc16.ObtenerConsultarNombreMetodoNombreMetodo();
                    //com21.Ejecutar();
                    ListaEntidad.Add(Entidad);
                    perfil.listaRegla.Add(Entidad as EntidadRegla);
                }
            }
            for (int i = 0; i == perfil.listaRegla.Count; i++)
            {
                regla = (EntidadRegla)perfil.listaRegla[i];

                
                if (Result.Respuesta == true)
                {
                    Cadena  = "Parseo exitoso!";
                }
            }
           
        }
    }
}
